承接上一則提到的資料庫,一般來說當我們在做文書處理時,會將資料用 Excel 做整理 儲存,但對於網站來說, Excel 所能夠存儲的資料量真的太小,且無法有效拿取資料,所以我們會使用資料庫的協助,SQL(Structured Query Language),是一種資料庫的結構化查詢語言,對資料庫做溝通的程式語言。明確的說是在操作資料庫的程式語言,透過 SQL 語法建立新的資料庫、資料表、欄位及、索引等,或建立查詢表、排序、過濾資料、查詢、修改、新增及刪除資料等動作。
微人一直都沒有辦法的理解這是什麼,直到現在寫鐵人賽,才驚覺要仔細地來研究研究。今天用一個非常白話的方式來聊聊好了。韓式料理中豐富的小菜是挺出名的,但若是有限的時間吃一餐並且多樣的菜色,飯捲就是一個相當好的選擇。
Model Scopes 就像這裡所說的飯捲的概念,是一個在 Rails 環境中提供給 Model使用的方法,主要功能是將經常使用的條件式宣告起來,讓我們的程式碼能夠變得乾淨且易讀。例如:網站上呈現「特價商品區」,這時候需要在 Controller 下條件式選取特價商品出來。但條件更動是一直在改變的,若突然需要增加限制顯示「低於300元」條件,對於後端來說,程式碼的維護則是越來越不容易。因此,Model Scopes方法,將條件是宣告起來當組合技使用,對於後端程式開發非常方便。
scope :published_books, -> { where(publish_state: "on-shelf").order(id: :desc)}
scope :unpublish_books, -> { where(publish_state: "off-shelf”)}
就像這裡我們針對出版的書籍做一個條件式的宣告
(上架書籍:狀態是已發布並讓id排序從大到小)
(下架書籍:狀態是未發佈)